package com.czm.art_light.mapper;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.czm.art_light.entity.ArtWork;
import com.czm.art_light.param.request.ArtSearchReqDto;
import com.czm.art_light.param.request.ArtWorkReqDto;
import com.czm.art_light.param.response.ArtSearchRespDto;
import com.czm.art_light.param.response.ArtWorkBasicInfoRespDto;
import com.czm.art_light.param.response.ArtWorkEsRespDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 作品信息 Mapper 接口
 */
@Mapper
public interface ArtWorkMapper {

    /**
     * 根据作品id查找对应的作品信息
     */
    ArtWork getById(@Param("id") Integer id);

    /**
     * 根据艺术家ID查找创作的作品
     */
    List<ArtWork> listByArtistId(@Param("artistId") Integer artistId);

    /**
     * 根据艺术话题的ID或者作品类别的ID或者作品的创建者的ID或者作品所属的流派的ID 进行作品分页查找
     */
    List<ArtWork> listArtWorkByParamId(IPage<ArtWorkBasicInfoRespDto> page, ArtWorkReqDto artWorkReqDto);

    /**
     * 根据艺术话题的ID或者作品类别的ID或者作品的创建者的ID或者作品所属的流派的ID 进行作品艺术家ID分页查找
     */
    List<Integer> listArtArtistIdByParamId(IPage<ArtWorkBasicInfoRespDto> page, ArtWorkReqDto artWorkReqDto);

    /**
     * 根据关键字对艺术作品的名称进行模糊查询
     */
    List<ArtWorkBasicInfoRespDto> listArtWorkByKeyword(Page<ArtSearchReqDto> page, ArtSearchReqDto artSearchReqDto);

    /**
     * 查询所有的艺术作品
     */
    List<ArtWork> listAll();

    /**
     * 查询自指定时间以来新增或修改的艺术作品数据
     */
    List<ArtWork> selectModifiedArtWorks(@Param("lastSyncTime") LocalDateTime lastSyncTime);
}
